package JXY03;

import java.io.File;
import java.io.FileFilter;
import java.io.FileNotFoundException;
import java.io.RandomAccessFile;
import java.text.SimpleDateFormat;
import java.util.*;

/**
 * 编写一个程序，将当前目录下所有的员工文件(.emp文件)进行读取，并解析出所有员工为Emp
 * 对象并存入Map。其中key为该员工的名字，value为该员工的emp对象。
 * 然后，要求用户输入一个员工名字，若该员工存在，则输出该员工的名字，年龄，工资，以及入职20周年的纪念日当周的周六的日期。
 * 即:输入名字"张三"
 * 若该员工存在，则输出如下格式:
 * 张三,25,5000,2006-02-14
 * 入职20周年纪念日派对日期: 2026-02-14  （注:若入职日期为:2006-02-14）
 * 若该员工不存在，则输出:"查无此人"
 * @author Bonnie
 *
 */
public class Test03 {
    public static void main(String[] args) throws Exception {
        Test03 test03 = new Test03();
        File dir = new File(".");
        List<Emp> list = test03.loadEmp(dir);
        System.out.println(dir);

        Map<String,Emp> map = new HashMap<String,Emp>();
        for (Emp emp: list){
            map.put(emp.getName(), emp);
        }

        Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个员工名字：");
        String name = sc.nextLine();

        if (map.containsKey(name)){
            Emp e = map.get(name);
            Calendar calendar =     Calendar.getInstance();
            calendar.setTime(e.getHiredate());
            calendar.add(Calendar.YEAR,20);
            calendar.set(Calendar.DAY_OF_WEEK,Calendar.SATURDAY);
            SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
            System.out.println(e);
            System.out.println("入职20周年派对日："+ format.format(calendar.getTime()));
        }else {
            System.out.println("查无此人");
        }

    }

    public List<Emp> loadEmp(File dir) throws Exception {
        List<Emp> list = new ArrayList<Emp>();
        File[] emps = dir.listFiles(new FileFilter() {
            @Override
            public boolean accept(File pathname) {
                return pathname.getName().endsWith(".emp");
            }
        });
        for (File file: emps){
            list.add(parseEmp(file));
        }
        return list;
    }

    public Emp parseEmp(File file) throws Exception {
        RandomAccessFile raf = new RandomAccessFile(file,"r");
        //文件多大就创建多大的数组
        byte[] buf = new byte[(int)file.length()];
        //将文件数据全部读取出来并转换为字符串
        int len=raf.read(buf);
        String info = new String(buf,0,len);
        //解析字符串并转换为Emp对象
        String[] infos = info.split(",");
        String name = infos[0];
        int age = Integer.parseInt(infos[1].trim());
        String gender = infos[2];
        int salary = Integer.parseInt(infos[3].trim());
        String hiredate_s = infos[4];

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        Date hiredate = sdf.parse(hiredate_s);
        Emp emp = new Emp(name,age,gender,salary,hiredate);
        //打桩
        System.out.println("读取emp:"+emp);
        return emp;
    }

}
